package config

var Config = NewConfig()

type Base struct {
	Name       string // 名称
	Version    string // 版本号
	ProxyMode  string // 代理模式
	ListenAddr string // 监听地址, 默认在所有地址监听
	Daemon     bool   // 后台进程模式
	DnsServer  string // DNS服务器地址
	Port       int    // 监听端口, 默认8080
	Log        string // 日志文件
	Debug      bool   // 开启调试日志
	Tcp        *Tcp   // tcp配置
	Http       *Http  // http配置
	Socks      *Socks // socks配置
}

func NewConfig() *Base {
	return &Base{
		Name:       "proxy",
		Version:    "3.2.1",
		ListenAddr: "0.0.0.0",
		Port:       8080,
		Tcp:        &Tcp{Name: "tcp"},
		Http:       &Http{Name: "http"},
		Socks:      &Socks{Name: "socks"},
	}
}

type Tcp struct {
	Name    string
	Timeout int    // 超时时间
	Target  string // 目标地址
}

type Http struct {
	Name         string
	AuthUser     string // http代理服务器账号, 只能设置一个账号
	AuthPassword string // http代理服务器密码, 只能设置一个密码
	AuthFilePath string // http代码服务器认证文件, 每行一个, 可设置多个账号和密码
	AclFilePath  string // 访问控制列表文件
}

type Socks struct {
	Name         string
	AuthUser     string // socks的账号, 设置单个账号
	AuthPassword string // socks服务密码, 设置单个密码
	AuthFilePath string // socks账号文件, 每行一个，可设置多个
	AclFilePath  string // 访问控制列表文件
}
